#ifndef __BIT_SOURCE_H__
#define __BIT_SOURCE_H__ 1

#include "types.h"
#include "stegio.h"

/**
 * @brief abstract steg payload bit source
 * @author gpitsch and rpoisel
 */
class IBitSource
{
public:
	IBitSource() { }
	virtual ~IBitSource() { }

	/**
	 * @brief get a data bit from the byte buffer
	 * @return 1 for more steg payload and 0 for no more steg payload (EOF)
	 */
	virtual int getBit(bool& pReadBit) = 0;

	/**
	 * @brief put a data bit into the byte buffer
	 * @return true if everything is ok, false tells the embedding engine to
	 * resynchronize
	 */
	virtual bool putBit(bool pWriteBit) = 0;
};

#endif // __BIT_SOURCE_H__
